import 'reflect-metadata';
import {SetMetadata} from "../common";

export class Reflector {
    get(metadataKey: string | Function, target, key?) {
        return key ? Reflect.getMetadata(metadataKey, target, key) : Reflect.getMetadata(metadataKey, target);
    }

    static createDecorator<T>() {
        function decoratorFactory(metadataValue: T) {
            // return (target: object | Function, propertyKey?: string, descriptor?: PropertyDescriptor) => {
            //     // SetMetadata 返回一个装饰器,直接调用新函数,传入当前的target等等信息变量参数
            //     let decoratorFn = SetMetadata(decoratorFactory, metadataValue);
            //     decoratorFn(target, propertyKey, descriptor);
            // }
            return SetMetadata(decoratorFactory, metadataValue);
        }

        return decoratorFactory;
    }
}
